import {
	getGridCode,
	getSurroundingGrids
} from "./getSurroundingGrids";
import {
	clearUnRead
} from '@/utils/msgAction.js'
import store from "../store";

/**
 * 筛选需要处理的新消息
 * @param {Object} msg - 新消息对象
 * @param {Object} queryParam - 查询参数（包含location、id等）
 * @returns {Object|boolean} - 符合条件的消息对象，否则返回false
 */
export default function newMsgAction(msg, queryParam) {
	const user=store.state.msg.user
	if (!msg || !queryParam) {
		console.error('参数不存在', );
		return false;
	}

	const type = msg.toTarget.targetType
	const radius = store.state.msg?.stateConfig?.radius || 5; // 可选链避免state结构异常报错

	// 类型1：公共消息（根据地理位置网格判断）
	if (type === "1") {
		// 校验必要参数：若没有location，无法计算网格，返回false
		if (!queryParam.location) {
			console.error('参数不存在----位置 ');
			return false;
		}
		const gridCenter = getGridCode(queryParam.location);
		console.log('1111',gridCenter);
		const surroundingGrids = getSurroundingGrids(gridCenter, radius); // 语义化变量名
		console.log('22222',surroundingGrids);
		// 判断消息所在网格是否在当前范围的网格中
		const isInRange = surroundingGrids.includes(msg.grid);
		console.log('33333',isInRange);
		if (isInRange) {
			clearUnRead(msg)
			return {
				code: true,
				msg: {
					...msg,
					isRead: true
				}
			}
		} else {
			return {
				code: false,
				errMsg:'公共消息类型错误'
			}
		}

	}

	// 类型2：个人/群组消息（根据targetId匹配）
	if (type === "3") {
		// 校验必要参数：若没有id，无法匹配，返回false
		if (queryParam.id === undefined) {
			return {
				code: false
			}
		}
		if (queryParam.id === msg.sendUserId && msg.toTarget.targetId === user.userId || queryParam.id === msg.toTarget
			.targetId && msg.sendUserId === user.userId) {
			clearUnRead(msg)
			return {
				code: true,
				msg: {
					...msg,
					isRead: true
				}
			}
		} else {
			return {
				code: false,
				errMsg:'个人信息类型错误'
			}
		}

	}
	if(type==='2'){
	 if (queryParam.id===msg.toTarget.targetId){
		 clearUnRead(msg)
		 return{
			 code: true,
		 msg: {
		 	...msg,
		 	isRead: true
		 } 
		 }
		
	 }else{
		 return {
			 code:false,
			 errMsg:'群信息类型错误'
		 }
	 } 
	}

	// 其他未定义的消息类型，返回false
	return {
		code:false,
		errMsg:'其它类型待开发'
	};
}